﻿///////////////////////////////////////////////////////////////////////////////////////////////////////
// Copyright (c) 2023, ООО 1С-Софт
// Все права защищены. Эта программа и сопроводительные материалы предоставляются 
// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0)
// Текст лицензии доступен по ссылке:
// https://creativecommons.org/licenses/by/4.0/legalcode
///////////////////////////////////////////////////////////////////////////////////////////////////////

#Область ОбработчикиСобытийФормы

&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
	
	Параметры.Свойство("ТекущаяКодировка", ТекущаяКодировка);
	
	ПоказыватьТолькоОсновныеКодировки = Истина;
	ЗаполнитьСписокКодировок(Не ПоказыватьТолькоОсновныеКодировки);
	
	Если ОбщегоНазначения.ЭтоМобильныйКлиент() Тогда
		ПоложениеКоманднойПанели = ПоложениеКоманднойПанелиФормы.Верх;
	КонецЕсли;
	
КонецПроцедуры

#КонецОбласти

#Область ОбработчикиСобытийЭлементовШапкиФормы

&НаКлиенте
Процедура ПоказыватьТолькоОсновныеКодировкиПриИзменении(Элемент)
	
	ЗаполнитьСписокКодировок(Не ПоказыватьТолькоОсновныеКодировки);
	
КонецПроцедуры

#КонецОбласти

#Область ОбработчикиСобытийЭлементовТаблицыФормыСписокКодировок

&НаКлиенте
Процедура СписокКодировокВыбор(Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка)
	
	ЗакрытьФормуСВозвратомКодировки();
	
КонецПроцедуры

#КонецОбласти

#Область ОбработчикиКомандФормы

&НаКлиенте
Процедура ВыбратьКодировку(Команда)
	
	ЗакрытьФормуСВозвратомКодировки();
	
КонецПроцедуры

#КонецОбласти

#Область СлужебныеПроцедурыИФункции

&НаКлиенте
Процедура ЗакрытьФормуСВозвратомКодировки()
	
	Представление = Элементы.СписокКодировок.ТекущиеДанные.Представление;
	Если Не ЗначениеЗаполнено(Представление) Тогда
		Представление = Элементы.СписокКодировок.ТекущиеДанные.Значение;
	КонецЕсли;
	
	РезультатВыбора = Новый Структура;
	РезультатВыбора.Вставить("Значение", Элементы.СписокКодировок.ТекущиеДанные.Значение);
	РезультатВыбора.Вставить("Представление", Представление);
	
	ОповеститьОВыборе(РезультатВыбора);
	
КонецПроцедуры

&НаСервере
Процедура ЗаполнитьСписокКодировок(ПолныйСписок)
	
	ИдЭлемента = Неопределено;
	СписокКодировокЛокальный = Неопределено;
	СписокКодировок.Очистить();
	
	Если Не ПолныйСписок Тогда
		СписокКодировокЛокальный = РаботаСФайламиСлужебный.Кодировки();
	Иначе
		СписокКодировокЛокальный = ПолучитьПолныйСписокКодировок();
	КонецЕсли;
	
	Для Каждого Кодировка Из СписокКодировокЛокальный Цикл
		
		ЭлементСписка = СписокКодировок.Добавить(Кодировка.Значение, Кодировка.Представление);
		
		Если НРег(Кодировка.Значение) = НРег(ТекущаяКодировка) Тогда
			ИдЭлемента = ЭлементСписка.ПолучитьИдентификатор();
		КонецЕсли;
		
	КонецЦикла;
	
	Если ИдЭлемента <> Неопределено Тогда
		Элементы.СписокКодировок.ТекущаяСтрока = ИдЭлемента;
	КонецЕсли;
	
КонецПроцедуры

// Возвращает таблицу имен кодировок.
//
// Возвращаемое значение:
//   ТаблицаЗначений
//
&НаСервереБезКонтекста
Функция ПолучитьПолныйСписокКодировок()

	СписокКодировок = Новый СписокЗначений;
	
	СписокКодировок.Добавить("Adobe-Standard-Encoding");
	СписокКодировок.Добавить("Big5");
	СписокКодировок.Добавить("Big5-HKSCS");
	СписокКодировок.Добавить("BOCU-1");
	СписокКодировок.Добавить("CESU-8");
	СписокКодировок.Добавить("cp1006");
	СписокКодировок.Добавить("cp1025");
	СписокКодировок.Добавить("cp1097");
	СписокКодировок.Добавить("cp1098");
	СписокКодировок.Добавить("cp1112");
	СписокКодировок.Добавить("cp1122");
	СписокКодировок.Добавить("cp1123");
	СписокКодировок.Добавить("cp1124");
	СписокКодировок.Добавить("cp1125");
	СписокКодировок.Добавить("cp1131");
	СписокКодировок.Добавить("cp1386");
	СписокКодировок.Добавить("cp33722");
	СписокКодировок.Добавить("cp437");
	СписокКодировок.Добавить("cp737");
	СписокКодировок.Добавить("cp775");
	СписокКодировок.Добавить("cp850");
	СписокКодировок.Добавить("cp851");
	СписокКодировок.Добавить("cp852");
	СписокКодировок.Добавить("cp855");
	СписокКодировок.Добавить("cp856");
	СписокКодировок.Добавить("cp857");
	СписокКодировок.Добавить("cp858");
	СписокКодировок.Добавить("cp860");
	СписокКодировок.Добавить("cp861");
	СписокКодировок.Добавить("cp862");
	СписокКодировок.Добавить("cp863");
	СписокКодировок.Добавить("cp864");
	СписокКодировок.Добавить("cp865");
	СписокКодировок.Добавить("cp866",   НСтр("ru = 'CP866 (Кириллица DOS)'"));
	СписокКодировок.Добавить("cp868");
	СписокКодировок.Добавить("cp869");
	СписокКодировок.Добавить("cp874");
	СписокКодировок.Добавить("cp875");
	СписокКодировок.Добавить("cp922");
	СписокКодировок.Добавить("cp930");
	СписокКодировок.Добавить("cp932");
	СписокКодировок.Добавить("cp933");
	СписокКодировок.Добавить("cp935");
	СписокКодировок.Добавить("cp937");
	СписокКодировок.Добавить("cp939");
	СписокКодировок.Добавить("cp949");
	СписокКодировок.Добавить("cp949c");
	СписокКодировок.Добавить("cp950");
	СписокКодировок.Добавить("cp964");
	СписокКодировок.Добавить("ebcdic-ar");
	СписокКодировок.Добавить("ebcdic-de");
	СписокКодировок.Добавить("ebcdic-dk");
	СписокКодировок.Добавить("ebcdic-he");
	СписокКодировок.Добавить("ebcdic-xml-us");
	СписокКодировок.Добавить("EUC-JP");
	СписокКодировок.Добавить("EUC-KR");
	СписокКодировок.Добавить("GB_2312-80");
	СписокКодировок.Добавить("gb18030");
	СписокКодировок.Добавить("GB2312");
	СписокКодировок.Добавить("GBK");
	СписокКодировок.Добавить("hp-roman8");
	СписокКодировок.Добавить("HZ-GB-2312");
	СписокКодировок.Добавить("IBM01140");
	СписокКодировок.Добавить("IBM01141");
	СписокКодировок.Добавить("IBM01142");
	СписокКодировок.Добавить("IBM01143");
	СписокКодировок.Добавить("IBM01144");
	СписокКодировок.Добавить("IBM01145");
	СписокКодировок.Добавить("IBM01146");
	СписокКодировок.Добавить("IBM01147");
	СписокКодировок.Добавить("IBM01148");
	СписокКодировок.Добавить("IBM01149");
	СписокКодировок.Добавить("IBM037");
	СписокКодировок.Добавить("IBM1026");
	СписокКодировок.Добавить("IBM1047");
	СписокКодировок.Добавить("ibm-1047_P100-1995,swaplfnl");
	СписокКодировок.Добавить("ibm-1129");
	СписокКодировок.Добавить("ibm-1130");
	СписокКодировок.Добавить("ibm-1132");
	СписокКодировок.Добавить("ibm-1133");
	СписокКодировок.Добавить("ibm-1137");
	СписокКодировок.Добавить("ibm-1140_P100-1997,swaplfnl");
	СписокКодировок.Добавить("ibm-1142_P100-1997,swaplfnl");
	СписокКодировок.Добавить("ibm-1143_P100-1997,swaplfnl");
	СписокКодировок.Добавить("ibm-1144_P100-1997,swaplfnl");
	СписокКодировок.Добавить("ibm-1145_P100-1997,swaplfnl");
	СписокКодировок.Добавить("ibm-1146_P100-1997,swaplfnl");
	СписокКодировок.Добавить("ibm-1147_P100-1997,swaplfnl ");
	СписокКодировок.Добавить("ibm-1148_P100-1997,swaplfnl");
	СписокКодировок.Добавить("ibm-1149_P100-1997,swaplfnl");
	СписокКодировок.Добавить("ibm-1153");
	СписокКодировок.Добавить("ibm-1153_P100-1999,swaplfnl");
	СписокКодировок.Добавить("ibm-1154");
	СписокКодировок.Добавить("ibm-1155");
	СписокКодировок.Добавить("ibm-1156");
	СписокКодировок.Добавить("ibm-1157");
	СписокКодировок.Добавить("ibm-1158");
	СписокКодировок.Добавить("ibm-1160");
	СписокКодировок.Добавить("ibm-1162");
	СписокКодировок.Добавить("ibm-1164");
	СписокКодировок.Добавить("ibm-12712_P100-1998,swaplfnl");
	СписокКодировок.Добавить("ibm-1363");
	СписокКодировок.Добавить("ibm-1364");
	СписокКодировок.Добавить("ibm-1371");
	СписокКодировок.Добавить("ibm-1388");
	СписокКодировок.Добавить("ibm-1390");
	СписокКодировок.Добавить("ibm-1399");
	СписокКодировок.Добавить("ibm-16684");
	СписокКодировок.Добавить("ibm-16804_X110-1999,swaplfnl");
	СписокКодировок.Добавить("IBM278");
	СписокКодировок.Добавить("IBM280");
	СписокКодировок.Добавить("IBM284");
	СписокКодировок.Добавить("IBM285");
	СписокКодировок.Добавить("IBM290");
	СписокКодировок.Добавить("IBM297");
	СписокКодировок.Добавить("IBM367");
	СписокКодировок.Добавить("ibm-37_P100-1995,swaplfnl");
	СписокКодировок.Добавить("IBM420");
	СписокКодировок.Добавить("IBM424");
	СписокКодировок.Добавить("ibm-4899");
	СписокКодировок.Добавить("ibm-4909");
	СписокКодировок.Добавить("ibm-4971");
	СписокКодировок.Добавить("IBM500");
	СписокКодировок.Добавить("ibm-5123");
	СписокКодировок.Добавить("ibm-803");
	СписокКодировок.Добавить("ibm-8482");
	СписокКодировок.Добавить("ibm-867");
	СписокКодировок.Добавить("IBM870");
	СписокКодировок.Добавить("IBM871");
	СписокКодировок.Добавить("ibm-901");
	СписокКодировок.Добавить("ibm-902");
	СписокКодировок.Добавить("IBM918");
	СписокКодировок.Добавить("ibm-971");
	СписокКодировок.Добавить("IBM-Thai");
	СписокКодировок.Добавить("IMAP-mailbox-name");
	СписокКодировок.Добавить("ISO_2022,locale=ja,version=3");
	СписокКодировок.Добавить("ISO_2022,locale=ja,version=4");
	СписокКодировок.Добавить("ISO_2022,locale=ko,version=1");
	СписокКодировок.Добавить("ISO-2022-CN");
	СписокКодировок.Добавить("ISO-2022-CN-EXT");
	СписокКодировок.Добавить("ISO-2022-JP");
	СписокКодировок.Добавить("ISO-2022-JP-2");
	СписокКодировок.Добавить("ISO-2022-KR");
	СписокКодировок.Добавить("iso-8859-1",   НСтр("ru = 'ISO-8859-1 (Западноевропейская ISO)'"));
	СписокКодировок.Добавить("iso-8859-13");
	СписокКодировок.Добавить("iso-8859-15");
	СписокКодировок.Добавить("iso-8859-2",   НСтр("ru = 'ISO-8859-2 (Центральноевропейская ISO)'"));
	СписокКодировок.Добавить("iso-8859-3",   НСтр("ru = 'ISO-8859-3 (Латиница 3 ISO)'"));
	СписокКодировок.Добавить("iso-8859-4",   НСтр("ru = 'ISO-8859-4 (Балтийская ISO)'"));
	СписокКодировок.Добавить("iso-8859-5",   НСтр("ru = 'ISO-8859-5 (Кириллица ISO)'"));
	СписокКодировок.Добавить("iso-8859-6");
	СписокКодировок.Добавить("iso-8859-7",   НСтр("ru = 'ISO-8859-7 (Греческая ISO)'"));
	СписокКодировок.Добавить("iso-8859-8");
	СписокКодировок.Добавить("iso-8859-9",   НСтр("ru = 'ISO-8859-9 (Турецкая ISO)'"));
	СписокКодировок.Добавить("JIS_Encoding");
	СписокКодировок.Добавить("koi8-r",       НСтр("ru = 'KOI8-R (Кириллица KOI8-R)'"));
	СписокКодировок.Добавить("koi8-u",       НСтр("ru = 'KOI8-U (Кириллица KOI8-U)'"));
	СписокКодировок.Добавить("KSC_5601");
	СписокКодировок.Добавить("LMBCS-1");
	СписокКодировок.Добавить("LMBCS-11");
	СписокКодировок.Добавить("LMBCS-16");
	СписокКодировок.Добавить("LMBCS-17");
	СписокКодировок.Добавить("LMBCS-18");
	СписокКодировок.Добавить("LMBCS-19");
	СписокКодировок.Добавить("LMBCS-2");
	СписокКодировок.Добавить("LMBCS-3");
	СписокКодировок.Добавить("LMBCS-4");
	СписокКодировок.Добавить("LMBCS-5");
	СписокКодировок.Добавить("LMBCS-6");
	СписокКодировок.Добавить("LMBCS-8");
	СписокКодировок.Добавить("macintosh");
	СписокКодировок.Добавить("SCSU");
	СписокКодировок.Добавить("Shift_JIS");
	СписокКодировок.Добавить("us-ascii",     НСтр("ru = 'US-ASCII (США)'"));
	СписокКодировок.Добавить("UTF-16");
	СписокКодировок.Добавить("UTF16_OppositeEndian");
	СписокКодировок.Добавить("UTF16_PlatformEndian");
	СписокКодировок.Добавить("UTF-16BE");
	СписокКодировок.Добавить("UTF-16LE");
	СписокКодировок.Добавить("UTF-32");
	СписокКодировок.Добавить("UTF32_OppositeEndian");
	СписокКодировок.Добавить("UTF32_PlatformEndian");
	СписокКодировок.Добавить("UTF-32BE");
	СписокКодировок.Добавить("UTF-32LE");
	СписокКодировок.Добавить("UTF-7");
	СписокКодировок.Добавить("UTF-8",        НСтр("ru = 'UTF-8 (Юникод UTF-8)'"));
	СписокКодировок.Добавить("windows-1250", НСтр("ru = 'Windows-1250 (Центральноевропейская Windows)'"));
	СписокКодировок.Добавить("windows-1251", НСтр("ru = 'Windows-1251 (Кириллица Windows)'"));
	СписокКодировок.Добавить("windows-1252", НСтр("ru = 'Windows-1252 (Западноевропейская Windows)'"));
	СписокКодировок.Добавить("windows-1253", НСтр("ru = 'Windows-1253 (Греческая Windows)'"));
	СписокКодировок.Добавить("windows-1254", НСтр("ru = 'Windows-1254 (Турецкая Windows)'"));
	СписокКодировок.Добавить("windows-1255");
	СписокКодировок.Добавить("windows-1256");
	СписокКодировок.Добавить("windows-1257", НСтр("ru = 'Windows-1257 (Балтийская Windows)'"));
	СписокКодировок.Добавить("windows-1258");
	СписокКодировок.Добавить("windows-57002");
	СписокКодировок.Добавить("windows-57003");
	СписокКодировок.Добавить("windows-57004");
	СписокКодировок.Добавить("windows-57005");
	СписокКодировок.Добавить("windows-57007");
	СписокКодировок.Добавить("windows-57008");
	СписокКодировок.Добавить("windows-57009");
	СписокКодировок.Добавить("windows-57010");
	СписокКодировок.Добавить("windows-57011");
	СписокКодировок.Добавить("windows-874");
	СписокКодировок.Добавить("windows-949");
	СписокКодировок.Добавить("windows-950");
	СписокКодировок.Добавить("x-mac-centraleurroman");
	СписокКодировок.Добавить("x-mac-cyrillic");
	СписокКодировок.Добавить("x-mac-greek");
	СписокКодировок.Добавить("x-mac-turkish");
	
	Возврат СписокКодировок;

КонецФункции

#КонецОбласти
